package com.gsmr.realm;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

@Aspect
@Order(1)
@Component
public class LoggerAspect {

	/**
	 * 定义一个方法，用于声明切入点表达式，方法中一般不需要添加其他代码 使用@Pointcut声明切入点表达式
	 * 后面的通知直接使用方法名来引用当前的切点表达式；如果是其他类使用，加上包名即可
	 */
	@Pointcut("execution(public * com.gsmr.controller.*Controller.*(..))")
	// @Pointcut("execution( * com.gsmr.service.*.*(..))")
	public void declearJoinPointExpression() {
	}

	/**
	 * 前置通知
	 */
	@Before("declearJoinPointExpression()") // 该标签声	明次方法是一个前置通知：在目标方法开始之前执行
	public void beforMethod(JoinPoint joinPoint) {
		System.out.println("------------------------------------------------------------------------------");
//		String methodName = joinPoint.getSignature().getName();
//		System.out.println(methodName);
		// 切换数据源
//		MultipleDataSource.clearCustomerType();
//		MultipleDataSource.setCustomerType(MultipleDataSource.currentDataSource);
	}
}
